package com.qfjy.common.utils.redis;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName RedisRepeatUtils
 * @Description TODO
 * @Author guoweixin
 * @Date 2022/11/29
 * @Version 1.0
 */
@Component
@Slf4j
public class RedisRepeatUtils {

    /**Token 过期时间 30分钟*/
    private static final long EXPIRE_TOKEN_MINUTES=30;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    /**
     * TODO 生成 token
     * 进入添加页面
     *   生成redis token值。 token唯一标识（uuid)
     *   存到redis key (唯一） 请求路径
     *   设置过期时间。（30分钟）。
     *   存放request作用域
     */
    public void generateToken(String key, HttpServletRequest request){
        String uuid= UUID.randomUUID().toString();//UUID值 标识值
        //设置过期时间 30分钟
        redisTemplate.opsForValue().set(key+uuid,uuid,EXPIRE_TOKEN_MINUTES, TimeUnit.MINUTES);


        request.setAttribute("token",uuid);
    }
    /**
     * TODO 进行比较redis
     * key: 页面请求路径:
     */
     public boolean repeatCheck(String key,HttpServletRequest request){
        String uuid=request.getParameter("token");
         String redisKey=key+uuid;
         String redisToken= (String) redisTemplate.opsForValue().get(redisKey);
         //redis清空key
         redisTemplate.delete(redisKey);
         if(uuid.equals(redisToken)){
             return true;
         }else{
             return  false;
         }
     }
}
